package com.wlz;

/**
 * 扰动函数
 * @author wlz
 * @date 2021-01-19
 */
public class Disturb {

    /**
     * 扰动函数下，下标值计算
     *  1.把哈希值右移16位
     *  2.将结果与原哈希值做异或运算
     *  3.与运算计算下标
     * @param key
     * @param size
     * @return
     */
    public static int disturbHashIdx(String key, int size) {
        return (size - 1) & (key.hashCode() ^ (key.hashCode() >>> 16));
    }

    /**
     * 非扰动函数下，下标值计算
     * @param key
     * @param size
     * @return
     */
    public static int hashIdx(String key, int size) {
        return (size - 1) & key.hashCode();
    }

}
